ইউনিয়ন এবং এর ব্যবহার

Computer Programming - সি++ প্রোগ্রামিং (C++ Programming) স্ট্রাকচার এবং ইউনিয়ন |
257
257

ইউনিয়ন (Union) হলো C++ এর একটি ডেটা স্ট্রাকচার, যা একাধিক ডেটা মেম্বার ধারণ করতে পারে, তবে একই সময়ে কেবলমাত্র একটি মেম্বারের জন্য মেমোরি বরাদ্দ করা হয়। অর্থাৎ, একটি ইউনিয়ন একাধিক ধরনের ডেটা রাখার ক্ষমতা রাখে, কিন্তু একই সময়ে শুধুমাত্র একটি মেম্বার সক্রিয় থাকে। ইউনিয়নের প্রতিটি মেম্বার একই মেমোরি লোকেশন ভাগ করে নেয়, ফলে সর্বশেষ সেট করা মানই ইউনিয়নের মধ্যে সংরক্ষিত থাকে।

ইউনিয়ন কেন ব্যবহার করা হয়?

  • মেমোরি সাশ্রয়ী: ইউনিয়ন একাধিক মেম্বারের জন্য একই মেমোরি ব্যবহার করে, তাই এটি মেমোরি সাশ্রয়ী।
  • বিভিন্ন ধরনের ডেটা সংরক্ষণ: বিভিন্ন ধরনের ডেটা একসঙ্গে রাখতে সক্ষম, তবে একসঙ্গে একাধিক মেম্বারের মান ধরে রাখতে পারে না।
  • ভিন্ন ভিন্ন অর্থে একটি ডেটা রাখার প্রয়োজন: বিশেষত এমবেডেড সিস্টেম বা হার্ডওয়্যার সংক্রান্ত প্রোগ্রামিংয়ে, যেখানে মেমোরি সীমাবদ্ধ থাকে, ইউনিয়ন ব্যবহার করা হয়।

ইউনিয়ন ঘোষণা এবং ব্যবহার

ইউনিয়ন ঘোষণা

union UnionName {
    data_type member1;
    data_type member2;
    // অন্যান্য মেম্বার
};

উদাহরণ: ইউনিয়ন ব্যবহার

#include <iostream>
using namespace std;

// Data নামক একটি ইউনিয়ন ঘোষণা করা
union Data {
    int intValue;
    float floatValue;
    char charValue;
};

int main() {
    // Data ইউনিয়নের একটি অবজেক্ট তৈরি করা
    Data data;

    // মেম্বার সেট এবং প্রিন্ট করা
    data.intValue = 10;
    cout << "Integer Value: " << data.intValue << endl;

    data.floatValue = 3.14;
    cout << "Float Value: " << data.floatValue << endl;

    data.charValue = 'A';
    cout << "Char Value: " << data.charValue << endl;

    return 0;
}

আউটপুট:

Integer Value: 10
Float Value: 3.14
Char Value: A

বর্ণনা:

  • এখানে Data নামে একটি ইউনিয়ন তৈরি করা হয়েছে, যার মধ্যে intValue, floatValue, এবং charValue নামে তিনটি মেম্বার রয়েছে।
  • যেহেতু ইউনিয়ন সব মেম্বারকে একত্রে মেমোরি বরাদ্দ করে না, তাই সর্বশেষ মেম্বার সেট করার পর পুরোনো মানটি সংরক্ষিত থাকে না।

ইউনিয়ন এবং মেমোরি

ইউনিয়নের আকার তার সবচেয়ে বড় মেম্বারের আকারের সমান।

উদাহরণ: মেমোরি সাইজ নির্ণয়

#include <iostream>
using namespace std;

union Data {
    int intValue;
    float floatValue;
    double doubleValue;
};

int main() {
    cout << "Size of int: " << sizeof(int) << endl;
    cout << "Size of float: " << sizeof(float) << endl;
    cout << "Size of double: " << sizeof(double) << endl;
    cout << "Size of union Data: " << sizeof(Data) << endl;

    return 0;
}

আউটপুট:

Size of int: 4
Size of float: 4
Size of double: 8
Size of union Data: 8

বর্ণনা:

  • এখানে Data ইউনিয়নে intValue, floatValue, এবং doubleValue নামে তিনটি মেম্বার রয়েছে।
  • Data ইউনিয়নের আকার হলো তার সবচেয়ে বড় মেম্বার doubleValue এর আকারের সমান, অর্থাৎ ৮ বাইট।

ইউনিয়নের ব্যবহারিক উদাহরণ

উদাহরণ: ইউনিয়ন দিয়ে ডেটা টাইপ শনাক্তকরণ

#include <iostream>
using namespace std;

union Data {
    int intValue;
    float floatValue;
};

struct Container {
    Data data;
    bool isInt; // true হলে intValue ধারন করছে, false হলে floatValue ধারন করছে
};

int main() {
    Container container;
    
    container.data.intValue = 50;
    container.isInt = true;
    
    if (container.isInt) {
        cout << "Integer Value: " << container.data.intValue << endl;
    } else {
        cout << "Float Value: " << container.data.floatValue << endl;
    }

    container.data.floatValue = 3.5;
    container.isInt = false;

    if (container.isInt) {
        cout << "Integer Value: " << container.data.intValue << endl;
    } else {
        cout << "Float Value: " << container.data.floatValue << endl;
    }

    return 0;
}

বর্ণনা:

  • এখানে Container নামের একটি স্ট্রাকচার ব্যবহার করে ডেটা টাইপ শনাক্ত করা হয়েছে, যাতে ইউনিয়নের intValue অথবা floatValue কোনটি বর্তমানে অ্যাক্সেসযোগ্য তা জানা যায়।
  • isInt ফ্ল্যাগ ব্যবহার করে নির্ধারণ করা হয়েছে যে data ইউনিয়নের মধ্যে বর্তমানে intValue সংরক্ষিত কিনা।

ইউনিয়নের সুবিধা এবং অসুবিধা

সুবিধা

  1. মেমোরি সাশ্রয়ী: ইউনিয়ন কম মেমোরি ব্যবহার করে কারণ এটি একসঙ্গে একটি মেম্বারের মেমোরি বরাদ্দ করে।
  2. বিভিন্ন ধরনের ডেটা সংরক্ষণ: একাধিক মেম্বার রাখতে সক্ষম, যদিও একই সময়ে একটি মাত্র মেম্বার সক্রিয় থাকে।

অসুবিধা

  1. একই সময়ে একাধিক মেম্বার ধরে রাখতে পারে না: ইউনিয়নের মধ্যে একবারে একটি মাত্র মেম্বার সংরক্ষণ করা যায়।
  2. শেষ মেম্বারই কেবল সংরক্ষিত থাকে: যেহেতু সব মেম্বার একই মেমোরি শেয়ার করে, তাই সর্বশেষ সেট করা মেম্বারের মানই বিদ্যমান থাকে।

সারসংক্ষেপ

  • ইউনিয়ন হলো C++ এ একটি ডেটা স্ট্রাকচার, যা একসঙ্গে বিভিন্ন ধরনের ডেটা রাখতে পারে, তবে একসঙ্গে কেবলমাত্র একটি মেম্বারের জন্য মেমোরি বরাদ্দ করে।
  • ইউনিয়ন মেমোরি সাশ্রয়ী, এবং এটি বিশেষত এমবেডেড সিস্টেমে ব্যবহার করা হয়।
  • যেহেতু ইউনিয়ন একসঙ্গে একাধিক মেম্বার ধারণ করতে পারে না, তাই এটি ব্যবহারে সতর্ক থাকা প্রয়োজন।

ইউনিয়ন বিশেষ ক্ষেত্রে কার্যকরী এবং মেমোরি ব্যবহারে গুরুত্বপূর্ণ ভূমিকা পালন করে।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion